/**
 *  用来约束函数语法
 *  interface 接口名称{
 *     (形参：类型):返回值
 *  }
 *  小结：
 *  1、使用接口来约束函数的参数
 *  2、使用接口来约束函数的返回值
 *  3、使用接口来约束函数
 */
interface Foo{
    (arg:string):string
}

function showFoo(arg:Foo){
    //调用参数(函数)
    let result=arg("Lucy")
    console.log('result',result);
}
let foo=(arg:string)=>{
    return "hello"+" "+arg
}
showFoo(foo)

/**
 * 总结
 *  1、接口与对象的使用
 *  2、接口与函数的使用
 *  关于type和interface之间的区别
 *  type不会创建新的类型，为了方便起见，只是为联合类型取别名
 *  interface是新创建类型
 */



